STAK  :$/R `HT=20RV  """"""""̪3̪3 @"""""D"DĀ hC0&0 "U""U"U"UU"Uwwww݀UUUUH0 D9D"AA"A>"t"%2d$LA*@ @ "t"G"q]APP `on openStack start using stack "LaboratoryToolbox" end openStack Browser Home Stack Version 1.0 Copyright 1989,1990 by Apple Computer, Inc. All Rights Reserved THE MESSAGE HANDLERS USED IN THIS SCRIPT: startUp,getHomeInfo,resume,help,hyperTalk,nav c,b,s,mw,vw,se,ss,xy,disallowInterruption,allowInterruption setUserLevelFive,restoreUserLevel,searchScript,checkForMissingFonts THE FUNCTION HANDLERS USED IN THIS SCRIPT: checkHCFont XCMD'S USED BY THIS SCRIPT: FontExists XFCN Form: FontExists(ITh 8[A1!LD%p `ۈ"@BH!$z""<"B `ND#@ J"A]MB?ѴMfEP C" T ?dPf?ń @@M@ ($  0@BB ,@@K3`D "P@` @@>@t6@ P"2@(  P@AG0B-`  h@b@!aBH)!<@ d&   @A" )P@"0C@F ( P`C2@61d PAGEYR /: @`" 0$$@  H`P0 1@a !BhqAE! !@ `H@ɀ10@D`1 Z"d@" @82 "@ J  @ 0 ` @AP@G"@@@tsb./^8eB#e5`29-R1* A7zq0PC SM`Ŋ 3ad_!YRH]Aq`K2H -S!$;0 T $@@dB,q.gIP,ME @ Sڠ`TXH+ %A$$xA1 Ȑ !Q` C)@L@` @ (@ PA" @ d DD )vQ@ 80c!P!u`B@ @P`  dDIH@XD ' X@  *P`C@A@ A#EA @ @@@% X  @ H BIR  $B@ H@ #  X @ @@ @@  P@ H@!E0J@E$j[0S!xX(E@*pK ,irEўRP#&`^ !vN7#A-D, \P#rp@++ _8y! k%İ"PBH@CD jOAC):! K dcɛBhO8̭F\Dd h ł$ X0 #(!P"T @`B0hA`[6 U1,@"BDD LDD @($2!"cD$ !PH @BE @@ H$AB4M#Q $OZP0!P]@@P ,@\$d CPH@ EE!!AT LI\6OS!$;0 T $@@dB,q.gIP,ME @ Sڠ`TXHPpjLGpb"dd9xCI3-ar3 UFm(={vW5!+eh*2<wH @BKGD :5@BKGD5 :`BKGD/ :5&&^Title@BMAP/   CARD/Xf : ~h\o on mouseUp visual effect wipe right slowly doMenu "prev" end mouseUp fm} on mouseUp visual effect wipe left slowly doMenu "next" end mouseUp >(e ImportCardon mousedown if the optionkey is down then edit script of target exit mousedown end if choose browse tool go to card "HelpDefinition" doMenu "Paste Card" put the short name of this card into scratch go card "Index" put scratch & Return after cd field "index" end mousedown ,!T' indexon mouseDown -- go to the card associated with the click select the clickLine put the value of the clickLine into cardName wait until the mouse is up if the mouseLoc is not within rect of me then select empty exit mouseDown end if go card cardName end mouseDown g Create Cardon mouseUp ask "What is the topic of the new card?" if cd field "index" is empty then put it into cd field "index" else if the last character of cd field "index" is not return then put return after cd field "index" end if put return & it after last line of cd field "index" end if go to card "HelpDefinition" doMenu "copy card" doMenu "paste card" set the name of this card to it put it into card field "title" end mouseUpz O-sw  GoToolboxon mouseUp go card "Home" of Stack "LaboratoryToolbox" in new window end mouseUpRESu Overviewon mouseUp go card "Overview" end mouseUpd Ucu Supported Deviceson mouseUp go card "SupportedDevices" end mouseUpd esu Toolbox Externalson mouseUp go card "ToolboxExternals" end mouseUpf uu Planned Extensionson mouseUp go card "PlannedExtensions" end mouseUpV Ow  Add a Stacks Menuon mouseUp doStacksMenu end mouseUp"  .Aaps EVS-900 Controller Array Math Bload Bsave Credits Derivative DTCapture XCMD EVS-900 Controller Filelen GetIntegerElement HPLC Digitizer Listoid Movedata NewIntegerArray Overview PeakAnalysis PlannedExtensions Plot PICT S4 Meter Average S4 Meter Data Retrieval S4 Meter General Info S4 Meter Header S4 Meter Log Rate S4 Meter Start Time SetIntegerElement Statistics SupportedDevices Tabloid Textoid ToolboxExternals  Version 1.0Indexon openCard sort cd field "index" if line 1 of cd field "index" is empty then delete line 1 of cd field "index" end if if the last character of cd field "index" is not return then put return after cd field "index" end if end openCard BMAP   P ?!k7} : ;= p>0X<=0_>0/x=0AkH<#0 0/fz5 0#   5!f08@ %k g8"? n(ks=88y`"< 0gj^7" 'a͋ 0/jjs@~K 4XeP0",2& 0pwZ@3B@h01g$( 0w%p% $@!f) 34h yÁ 00`20  0a> %J'bp %a n(y  ,?ؐ2H? 0\=0_j>0/x =0>!g=!z>!<= > ;= n(o~"`0gռ_20@"0/n>0f50ps 01c0AQ6`8@![??;/R ``qf> %3@  K"C0(?!4 0(00w?t p0AQX0 (B  0/ jQNƀp8L 0f1bA;4F, != > ;= p> >0,=00pw#0Ac9>p 0c#"]H@c"F"0<&> %'? K7 0g!g=!z>!<= > ;= p~>0X=0_~>0/ =0>!=!>>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_~>0/8 =0>!g=!~>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p~>0X=0_n>0/|=0>!g=!z>!<= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0X=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!>>!= > ;= p~>0X=0_~>0/ X0~!!>"!"= ("> ;Y = p>Y(>0\X0=0_jX(`>0/xX=0X(>!gX=!zX(>! ?Y0 = p~Y(a>0X0/xX =0X(>!c( =!{((>!7>(0}!k(8` ?@`CARD*cXf :  h\o on mouseUp visual effect wipe right slowly doMenu "prev" end mouseUp fm} on mouseUp visual effect wipe left slowly doMenu "next" end mouseUp ( )f Header& h)n titleL  dw@ firston mouseUp go card "Index" end mouseUp( +V theTextV W{ Printon mouseUp print cd field "theText" end mouseUpTopic: Help DefinitionHelpDefinition`BMAPc   ?!k7} : ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0X=0_~>0/ =0>!=!>>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_~>0/8 =0>!g=!~>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p~>0X=0_n>0/|=0>!g=!z>!<= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0X=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!>>!= > ;= p~>0X=0_~>0/ X0~!!>"!"= ("> ;Y = p>Y(>0\X0=0_jX(`>0/xX=0X(>!gX=!zX(>! ?Y0 = p~Y(a>0X0/xX =0X(>!c( =!{((>!7>(0}!k(8` ?@ CARDS[Xf : 8h\o on mouseUp visual effect wipe right slowly doMenu "prev" end mouseUp fm} on mouseUp visual effect wipe left slowly doMenu "next" end mouseUp ( )f Header& h)n title" . Z F  \#t@ gobackon mouseUp go back end mouseUpTopic: HPLC DigitizerVV ]   & 1    m w This card emulates a scrolling strip chart recorder using GWI TurboDriver Digitize function operating in extended mode with inner loop interrupts. It can be used with MacADIOS II, MacADIOS II SE, and MacADIOS II Jr hardware. Interrupt tasks operate in the background and when in progress, do not move windows or exit the application. SLOT: The NuBus slot which contains the MacADIOS board. GWI Code: 1= 2= Bank: Channels Sample Interval: This is the sample rate in 1/60 second intervals (set between 2 and 60). Error Code: Refers to GWI MacADIOS Error Codes Dig 0 = No Error Dig 420 = Sample interval set too low Disk: Disk to save data file to. File: File name to save. Array Size: Number of points to be digitized. Digitize: Starts scrolling strip chart recorder mode to run for designated Array Size at the Sample Interval. Save File: Performs XFCN BSAVE, saves data as filename/Ch0 on specified disk. HPLC Digitizer`BMAP[   ?!k7} : ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0X=0_~>0/ =0>!=!>>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_~>0/8 =0>!g=!~>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p~>0X=0_n>0/|=0>!g=!z>!<= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0X=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!>>!= > ;= p~>0X=0_~>0/ X0~!!>"!"= ("> ;Y = p>Y(>0\X0=0_jX(`>0/xX=0X(>!gX=!zX(>! ?Y0 = p~Y(a>0X0/xX =0X(>!c( =!{((>!7>(0}!k(8` ?@$ CARD Xf9M!2&^TitleJ@S<< prevon mouseUp doMenu "prev" end mouseUpJUh@ nexton mouseUp doMenu "Next" end mouseUpLj}@ firston mouseUp go card "Index" end mouseUp( "/6~ CurHMS( 9/M~ CurCtr( P/d~ CurFrm*  Y TargetHMS* Y TargetCtr* Y TargetFrm(}Status&[ cmd1Y do iton mouseUp set visible of card field "MessageBox" to true wait 3 seconds set visible of card field "messagebox" to false end mouseUp g,w~ GetCounteron mouseUp set visible of card field "getcounter" to true wait 3 seconds set visible of card field "getcounter" to false end mouseUpZ GoToon mouseUp set visible of card field "Hr:M:S GoTo" to true wait 3 seconds set visible of card field "Hr:M:S GoTo" to false end mouseUpZ GoToon mouseUp set visible of card field "counter goto" to true wait 3 seconds set visible of card field "counter goto" to false end mouseUpZ GoToon mouseUp set visible of card field "Frame goto" to true wait 3 seconds set visible of card field "frame goto" to false end mouseUp(o{& Channel&  frame(! Volume&"^Title%- Pop-up NoteFld 36on enterInField hide me send "hideShowPopUp" to card button id 36 end enterInField&/Ee Reseton mouseUp set visible of card field "reset" to true wait 3 seconds set visible of card field "reset" to false end mouseUp 'E Pop-up NoteFld 38on enterInField hide me send "hideShowPopUp" to card button id 38 end enterInField(F[e Playon mouseUp set visible of card field "play" to true wait 3 seconds set visible of card field "play" to false end mouseUp)[ Pop-up NoteFld 40on enterInField hide me send "hideShowPopUp" to card button id 40 end enterInField+,p8 Pop-up NoteFld 42on enterInField hide me send "hideShowPopUp" to card button id 42 end enterInField-Br: Pop-up NoteFld 44on enterInField hide me send "hideShowPopUp" to card button id 44 end enterInField/Cp8 Pop-up NoteFld 46on enterInField hide me send "hideShowPopUp" to card button id 46 end enterInField1- Pop-up NoteFld 48on enterInField hide me send "hideShowPopUp" to card button id 48 end enterInField2]re Stopon mouseUp set visible of card field "stop" to true wait 3 seconds set visible of card field "stop" to false end mouseUp3r Pop-up NoteFld 50on enterInField hide me send "hideShowPopUp" to card button id 50 end enterInField4tf Pauseon mouseUp set visible of card field "pause" to true wait 3 seconds set visible of card field "pause" to false end mouseUp5 Pop-up NoteFld 52on enterInField hide me send "hideShowPopUp" to card button id 52 end enterInField6EpYۀ Dither Frameon mouseUp set visible of card field "ditherframe" to true wait 3 seconds set visible of card field "ditherframe" to false end mouseUp7Yp8 Pop-up NoteFld 54on enterInField hide me send "hideShowPopUp" to card button id 54 end enterInField9t< Pop-up NoteFld 56on enterInField hide me send "hideShowPopUp" to card button id 56 end enterInFieldt:  Get Counteron mouseUp set visible of card field "get counter" to false end mouseUpv;  Hr:M:STargeton mouseUp set visible of card field "Hr:M:STarget" to false end mouseUpx<  CounterTargeton mouseUp set visible of card field "countertarget" to false end mouseUpt=  FrameTargeton mouseUp set visible of card field "FrameTarget" to false end mouseUpr>  MessageBoxon mouseUp set visible of card field "MessageBox" to false end mouseUpr?  EVS900initon mouseUp set visible of card field "EVS900Init" to false end mouseUph@  Reseton mouseUp set visible of card field "Reset" to false end mouseUpfA  Playon mouseUp set visible of card field "Play" to false end mouseUpfB  Stopon mouseUp set visible of card field "Stop" to false end mouseUphC  Pauseon mouseUp set visible of card field "Pause" to false end mouseUptD  OpensmallTVon mouseUp set visible of card field "opensmallTV" to false end mouseUpxE  closeTVwindowon mouseUp set visible of card field "closeTVwindow" to false end mouseUppF  GrabFrameon mouseUp set visible of card field "grabframe" to false end mouseUp~GZs+ Go Backon mouseUp go card "Color EVS-900 Controller" of stack "LaboratoryToolbox" end mouseUpH0mD؀ Grab Frameon mouseUp set visible of card field "grabframe" to true wait 3 seconds set visible of card field "grabframe" to false end mouseUp,I  ditherframe,J  getcounter,K  Hr:M:S GoTo.L  counter goto,M  frame gotoHandler:Handler: EVS-900 Controller VCRcmd mplay 00:00:000900 00:00:3043 For Help: Click on a button. A description of what that button does will appear in this box. Click on this box and the description will disappear. Handler:0,initializes serial port to EVS900 tape deck Get Counter: Updates Hr:M:S, Counter, and Frame values to current settings from the tape deck. Displays those values in "Current" fields. Hr:M:S GoTo: Locates and pauses the tape at user defined Hour, Minute, Second tape values. Displays target values in Target fields.8Locates and pauses tape at user defined counter value. 4Locates and pauses tape at user defined frame valueD Message box: Command-line interface for Hypertalk commands(Initializes the EVS900 tape deck 7Rewinds the tape and resets counter value to zero= EVS900 Init: Initializes port to EVS900 tape deck 9 Reset: Rewinds tape and resets counter to zero.- Play: Puts tape deck into play mode- Stop: Puts tape deck into stop mode0 Pause: Puts tape deck into pause mode.D Open Small TV: Opens and displays Aaps color video screen.: Close TV Window: Closes Aaps color video screen.R Grab Frame: Grabs current frame and stores a pixel map on the clipboard.I Dither frame: Dithers current frame and displays in card window^ Get Counter: Displays current Hr:M:S, counter, and frame value of the tapes positionD Hr:M:S GoTo: Sets tape to user defined Hr:M:S target valueF Counter GoTo: Sets tape to user defined counter target valueB Frame GoTo: Sets tape to user defined frame target valueEVS-900 Controllerfunction tvOpen global tvControl if tvControl is empty or item 1 of tvControl is 0 then return false else return true end tvOpen on closeCard if tvOpen() then send "mouseUp" to card button "Close TV Window" end closeCard on openCard -- other scripts, including the tvOpen function use the emptiness -- of tvControl as a test to see if the tv is read to use. global tvControl put "" into tvControl end openCard on screenTest global tvControl, testTuple, testTemplate, hasLargeScreen -- item 11 of the tvControl variable is 1 if the Aapps Video -- Professional daughterboard is there to allow for the big -- screen. -- if the item is empty, then the window hasn't been opened, so -- this script opens it just long enough to check for the big screen. if item 11 of tvControl is empty then -- prep our 'private' globals for the test put "0,0,,testTemplate,1,0," into testTuple put "window,,0,0,0,0,0,0,0,0,,,,end" into testTemplate microTV "testTuple" if the result is empty then -- no error message from the XCMD if item 11 of testTuple is 1 then put true into hasLargeScreen else put false into hasLargeScreen microTVPoll -- needed to clear activate/deactivate events mtvClose "testTuple" else -- scream for help answer "There are no MicroTV cards in this system that this stack can use." with "OK" put false into hasLargeScreen end if else if item 11 of tvControl is 0 then put false into hasLargeScreen else put true into hasLargeScreen end screenTest BMAP   m &&8&0`&gUgg<H0 !V`3v ?qH~D @D ~ǀ   A Z or o At 2 A( ~c B.` .`"+@ `>@ 20 .# ~ 0 ~GO P `$; @$1 0 " $ `? 1  1 S$@SN原@#l0 D C 4 b<@b$M@  $ zz/M \z偔3z0\0=\P1zǃ***lEUiV{G|>`$ z`z>\ l$;L$1<" l?'''  w3mlxw32 w!" w?" w  " w 11" wێs~x ~ ~ n ~l ~0 ~  ~  ~ Q ~ a ~p# |..@ @ <̀ ~DdFf ~DDD$ ~DDG ~DDD ~LDF$ ox63 B@PDf P|a13 PD@! P@A? P@B P@C11 Pۙ % % el|sU&0U U> UB qUf e;p|''z8z 0z jj z$Cz$@0"<vD"wD"!0vF0"!v8C"! "" "< ***z3c6zz z z  z 1zۘ8+\\c2f\""B\"~\""@\b"bk÷3<CARDV4WnXf : bh\o on mouseUp visual effect wipe right slowly doMenu "prev" end mouseUp fm} on mouseUp visual effect wipe left slowly doMenu "next" end mouseUp ( )f Header& h)n titleL  dw@ firston mouseUp go card "Index" end mouseUp( +V theTextV W{ Printon mouseUp print cd field "theText" end mouseUpTopic: ListoidF Listoid 1.6 by Frdric RINALDI and the faithfull help of Benot WIDEMANN for WDEF and CDEF resources DESCRIPTION ------------ Listoid XCMD displays a list in a windoid. SYNTAX ------- Listoid [,[,][,][,] [,][]] PARAMETERS ------------ Only first param is needed. Order of params 3 to 7 doesn't matter, since the XCMD is able to recognize them. WName is a string giving the windoid name. Many windoids can be opened by using different names. List is a return or comma delimited string that will be displayed. Listoid provides an automatic separator recognition. WStyle is a string defining the window style. Allowed styles are : plain, zoom, roundRect, rect, shadow, windoid, windoidZoom, bigWindoid, bigWindoidZoom, Rinaldoid, RinaldoidZoom (Rinaldoid is the same as windoid, except that it displays the window title). All window styles are floating, except plain, zoom and roundRect. A windoid or Rinaldoid style window will have small scrollbars, while other styles will use standard size. Default is RinaldoidZoom if Rinaldoid WDEF resource is present, windoidZoom if not found. will be a point or a rect, and will define position and/or size of the windoid. Coordinated are card-relative. If omitted, windoid will appear with standard size at "0,10". defines the selection mode (no selection, one at a time, may but adjacent, many disjoint). Default is ONE. is an integer or a comma separated list of integers. It defines the selected line(s) when the windoid appears. Default is 1, but 0 can be used to have no selection at start. is the name of font and its size to use. Default is Geneva 10. Using "!" and "?" as parameter will return an online help (resp. copyright and syntax). USING ----- Listoid is stand alone, no linked resource is needed. Meanwhile, this stack contains a WDEF and a CDEF resource that are recognized by the XCMD if present. The WDEF allows to have an enhanced windoid-type window displaying title, while the CDEF is useful to get nice-looking scroll arrows for small scroll bars. So, these resources are optional, and for aesthetic purpose only. If you copy them, their ID can be set to any value but don't change their name. HINT : If you use a rect ot shadow style window, placing it on a card can simulate a smart HyperCard list field. If no rectangle param is used, the size of the window will be set accordingly to the longest string contained in the list. Clicking on item(s) in the windoid sends a "ListoidSelect" message followed by the clicked word(s) and the Listoid name.. This message can be trapped using a handler : on ListoidSelect What,Where if Where is "MyList" and What is ... end ListoidSelect NOTE : in order to avoid HyperCard's confusion, existing quotes in What param are automatically changed to single quote. When a windoid is opened, the "openListoid" message is sent, followed by the windoid name. This allows to define window properties before it is shown, since the message can be trapped using a handler : on openListoid Which if Which is "MyWindow" then... end openListoid When a windoid is close, the "closeListoid" message is sent, followed by the windoid name. This message can be trapped using a handler : on closeListoid Which if Which is "MyWindow" then... end closeListoid HINT : the card script contains a "on ControlKey" handler that allows selection of first matching item when typing a key in conjunction with control key. Moreover, while holding the control key down, the arrow keys allow to move in the list, return or enter to simulate a double-clic. It is now possible to send any string to search for to the window using : send "string" to window If the string is found, it will be highlighted int the list. Look for "on controlKey" handler in the card script, type Control+Key to try it. Like any XWindow, Listoid has properties that can be get and set thru HyperTalk. properties of window "Infoid" will return an item list of all allowed properties : loc : windoid's position according to card visible : windoid's visibility text : windoid's text rect : windoid's position and size according to card selectedLine : line number(s) selected selectionMode : selection mode (NO|ONE|CON|DIS) If an error occurs, external can return : "Error : Unrecognized parameter" "Error : Missing window name" "Error : Duplicate window name" "Error : Empty parameter" "Error : Unable to create XWindow" "Error : XWindows not implemented" HISTORY -------- 1.6 : Added arrow key moving and validation 1.5 : changed inContent cursor 1.4 : Added window style parameter Added "openListoid" message Added searching capabilities Added quote filter for ListoidSelect message parameters Fixed rect/globalRect property to not show window if invisible Added support of Rinaldoid WDEF and CDEF 1.3 : Added font name and size parameter 1.1 : Window title is now displayed Added window name parameter Window name is passed along with ListoidSelect message. Added closeListoid message -------------------------------------------------------------------- This (these) external(s) is (are) FreeWare,allowing unlimited use in any non-commercial stack. You just need in this case to mention the author's name and copyright in your stack. Any commercial use must be licensed and aknowledged by the author. F. Rinaldi - 1989,1990 AppleLink: RINALDI1 CalvaCom : FR10 Compuserve : 71170,2111Listoid`BMAPWn   ?!k7} : ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0X=0_~>0/ =0>!=!>>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_~>0/8 =0>!g=!~>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p~>0X=0_n>0/|=0>!g=!z>!<= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0X=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!>>!= > ;= p~>0X=0_~>0/ X0~!!>"!"= ("> ;Y = p>Y(>0\X0=0_jX(`>0/xX=0X(>!gX=!zX(>! ?Y0 = p~Y(a>0X0/xX =0X(>!c( =!{((>!7>(0}!k(8` ?@& CARDT1UOXf : #h\o on mouseUp visual effect wipe right slowly doMenu "prev" end mouseUp fm} on mouseUp visual effect wipe left slowly doMenu "next" end mouseUp ( )f Header& h)n titleL  dw@ firston mouseUp go card "Index" end mouseUp( +V theTextV W{ Printon mouseUp print cd field "theText" end mouseUpTopic: Textoid#׀2=h|   l 7?mf #&)HK ! $ > A p s Textoid 2.0 by Frdric RINALDI and the faithfull help of Benot WIDEMANN for WDEF and CDEF resources DESCRIPTION Textoid XCMD displays a text windoid. SYNTAX Textoid [,[,][,] [,] [,][,] [,] [,] [,] ] PARAMETERS Only first param is needed. Order of params 3 to 10 doesn't matter, since the XCMD is able to recognize them. WName is a string giving the windoid name. Many windoids can be opened by using different names. Text is the text that will be displayed in the windoid. WStyle is a string defining the window style. Allowed styles are : plain, zoom, roundRect, rect, shadow, windoid, windoidZoom, bigWindoid, bigWindoidZoom, Rinaldoid, RinaldoidZoom (Rinaldoid is the same as windoid, except that it displays the window title). All window styles are floating, except plain, zoom and roundRect. A windoid or Rinaldoid style window will have small scrollbars, while other styles will use standard size. Default is RinaldoidZoom if Rinaldoid WDEF resource is present, windoidZoom if not found. Color is a one or two items string giving the foreground and background color. For each item, allowed values are the standard colors (black, white, blue, red, yellow, cyan, magenta, green), or a three word string corresponding to red, green and blue values (100 5624 28652). will be a point or a rect, and will define position and/or size of the windoid. Coordinated are card-relative. If omitted, windoid will appear with standard size at "0,10". Wrap is a boolean to wrap (true) or not (false) the text in the windoid. Defazult is true. FName is a string giving the font that will be used. Default is Geneva. FSize is a string giving the font size that will be used. Default is 9. FStyle is an item(s) string giving the font style(s) that will be used (plain, bold, italic, outline, underline, shadow, condense, extend). Default is Plain. FAlign is a string giving the text alignment that will be used (left,right, center). Default is left. Using "!" and "?" as parameter will return an online help (resp. copyright and syntax). USING Textoid is stand alone, no linked resource is needed. Meanwhile, this stack contains a WDEF and a CDEF resource that are recognized by the XCMD if present. The WDEF allows to have an enhanced windoid-type window displaying title, while the CDEF is useful to get nice-looking scroll arrows for small scroll bars. So, these resources are optional, and for aesthetic purpose only. If you copy them, their ID can be set to any value but don't change their name. Each window can contain up to 32000 chars. Hint : If you use a rect ot shadow style window, placing it on a card can simulate a smart double-scroll HyperCard field. If no rectangle param is used, the size of the window will be set accordingly to the font. With multiple screens configuration, the windoid will be zoomed on the screen that it lays on. Version 1.1 adds hyperText feature : clicking on a word in the window sends a "ClicInText" message followed by the clicked word, windoid name, start and end char being clicked. If the clicked word exceeds 200 chars, its last char will be "" to notify the overflow. This message can be trapped using a handler : on clicInText What,Where,Start,Stop if Where is "Test1" and What is ... end clicInText When a windoid is opened, the "openTextoid" message is sent, followed by the windoid name. This allows to define window properties before it is shown, since the message can be trapped using a handler : on openTextoid Which if Which is "MyWindow" then... end openTextoid When a windoid is closed, the "closeTextoid" message is sent, followed by the windoid name. This message can be trapped using a handler : on closeTextoid Which if Which is "MyWindow" then... end closeTextoid Relase 1.5 allows now full editing of the text with Cut, Copy, Paste and Erase. One new property, lockText, allows to lock/unlock the content. When a window is created, its text is locked. Like for a field, the content must be locked to accept mouseDown events (thus HyperText). If unlocked, the insertion point will be set at the clickLoc. Shortcut : Command-Click locks the text Option-Click unlocks the text Command-A selects the whole text (if unlocked) Caution : Undo is not supported to minimize the needed RAM. Finally, the selectedText property allows to select any part of the text. When using set selectedText of window "MyWindow" to "X,Y", the window is brought to the front, the text is automatically unlocked, scrolled to show the insertion point, and you are ready to type in it. You can also get the selectedText when the window is closed using : on closeTextoid Which get selectedText of window Which put char (item 1 of it) to (item 2 of it) of Text of window Which end closeTextoid Hint : the insertion point will be placed at the end of the text by using : set selectedText of window MyWindow to 32000 PROPERTIES Like any XWindow, Textoid has properties that can be get and set thru HyperTalk. properties of window "Textoid" will return an item list of all allowed properties : loc : windoid's position according to card visible : windoid's visibility text : windoid's text rect : windoid's position and size according to card textFont : windoid's font textSize : windoid's font size globalLoc : windoid's position according to screen globalRect : windoid's position and size according to screen textAlign : windoid's text alignment (left,right,center) textStyle : windoid's text style (bold, italic, outline, underline, shadow, condense, extend) hScroll : horizontal scroll value (in pixels) vScroll : vertical scroll value (in lines) zoom : zoomed state (in, out) foreColor : text color (black, white, blue, red, yellow, cyan, magenta, green) or (red green blue) backColor : back color (black, white, blue, red, yellow, cyan, magenta, green) or (red green blue) lockText : text locking (true or false) selectedText: current selection (Start[,Stop]) ERRORS If an error occurs, external can return : "Error : Missing window name" "Error : Text cannot exceed 32000 chars" "Error : Unrecognized parameter" "Error : Duplicate window name" "Error : Empty parameter" "Error : Window rect defined twice" "Error : Window loc defined twice" "Error : Text wrap defined twice" "Error : Font size defined twice" "Error : Font name defined twice" "Error : Font style defined twice" "Error : Font alignment defined twice" "Error : Bad text style" "Error : Unable to create XWindow" "Error : XWindows not implemented" VERSIONS HISTORY 2.0 : enhanced window show/hide handling while switching under MultiFinder selection restored when activating non-floating windows text font, size and style can now be set using menus window ordering now correct when zooming in/out fixed random bug coming from bad controlHandle window clipboard now transferred only if not empty fixed hypertext bug when clicking on last word idle sent to card window even while editing windoid's text added start and stop char passed along with ClicInText message 1.9 : changed inContent cursor 1.8 : Added window style parameter Added "openTextoid" message Fixed rect/globalRect property to not show window if invisible Added support of Rinaldoid WDEF and CDEF 1.6 : Window title is displayed All RBG values available for color Added "closeTextoid" message when closing window Fixed minor bugs Added "selectedText" property Added command-A shortcut 1.5 : full text editing added. 1.4 : fixed a bug arising on CPUs with no Color QuickDraw 1.3 : Added color support 1.2 : fixed word hilighting with wrapping word 1.1 : fixed visual minor bugs (color GrowBox, multi-screen grow frame) added hyperText capabilities added properties : globalLoc,globalRect,textAlign,textStyle,hScroll, vScroll,zoom -------------------------------------------------------------------- This (these) external(s) is (are) FreeWare,allowing unlimited use in any non-commercial stack. You just need in this case to mention the author's name and copyright in your stack. Any commercial use must be licensed and aknowledged by the author. F. Rinaldi - 1989,1990 AppleLink: RINALDI1 CalvaCom : FR10 Compuserve : 71170,2111Textoid`BMAPUO   ?!k7} : ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0X=0_~>0/ =0>!=!>>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_~>0/8 =0>!g=!~>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p~>0X=0_n>0/|=0>!g=!z>!<= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0X=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!>>!= > ;= p~>0X=0_~>0/ X0~!!>"!"= ("> ;Y = p>Y(>0\X0=0_jX(`>0/xX=0X(>!gX=!zX(>! ?Y0 = p~Y(a>0X0/xX =0X(>!c( =!{((>!7>(0}!k(8` ?@CARDPQXf : jh\o on mouseUp visual effect wipe right slowly doMenu "prev" end mouseUp fm} on mouseUp visual effect wipe left slowly doMenu "next" end mouseUp ( )f Header& h)n titleL  dw@ firston mouseUp go card "Index" end mouseUp( +V theTextV W{ Printon mouseUp print cd field "theText" end mouseUpTopic: TabloidN/:ey|{   k q    ?"yzEOpvis Tabloid 1.1 by Frdric RINALDI DESCRIPTION Tabloid XCMD displays a spreadsheet like XWindoid, with multiple cells and columns. SYNTAX Tabloid [,[,[,][,] [,][,][,][,]] PARAMETERS Only first param is needed. Order of params 3 to 7 doesn't matter, since the XCMD is able to recognize them. WName is a string giving the windoid name. Many windoids can be opened by using different names. List is a comma/return delimited string that will be displayed. Line separator is return, column is comma. WStyle is a string defining the window style. Allowed styles are : plain, zoom, roundRect, rect, shadow, windoid, windoidZoom, bigWindoid, bigWindoidZoom, Rinaldoid, RinaldoidZoom (Rinaldoid is the same as windoid, except that it displays the window title). All window styles are floating, except plain, zoom and roundRect. A windoid or Rinaldoid style window will have small scrollbars, while other styles will use standard size. Default is RinaldoidZoom if Rinaldoid WDEF resource is present, windoidZoom if not found. will be a point or a rect, and will define position and/or size of the windoid. Coordinated are card-relative. If omitted, windoid will appear with standard size at "0,10". defines the selection mode (no selection, one at a time, may but adjacent, many disjoint). Default is ONE. comma separated list of cell coordinates. Each cell coordinate is a string of two integers separated by space, giving line and column number of the cell ("_[...,_]"). It defines the selected cells(s) when the windoid appears. Default is "1 1", but "0 0" can be used to have no selection at start. is the name of font and its size to use. Default is Geneva 10. is the text alignment in the cells (left, center, right). Default is "left". is a boolean telling if the cells must be framed or not. Default is true, but frame appears only if Tabloid LDEF is present in resource fork. Using "!" and "?" as parameter will return an online help (resp. copyright and syntax). USING Tabloid is stand alone, no linked resource is needed. Meanwhile, this stack contains a LDEF, WDEF and CDEF resources that are recognized by the XCMD if present. The LDEF allows to have framed cells like in a spreadsheet, vertical centering of text in cells and text alignmenet. The WDEF allows to have an enhanced windoid-type window displaying title, while the CDEF is useful to get nice-looking scroll arrows for small scroll bars. So, these resources are optional, and for aesthetic purpose only. If you copy them, their ID can be set to any value but don't change their name. HINT : If you use a rect ot shadow style window, placing it on a card can simulate a smart HyperCard spreadsheet field. If no rectangle param is used, the size of the window will be set according to maximum number of lines and columns contained in the list. The cells have all the same size which is automatically calculated according to the longest contained string. Clicking on cells(s) in the windoid sends a "TabloidSelect" message followed by the clicked word(s) and the Tabloid name. This message can be trapped using a handler : on TabloidSelect What,Where if Where is "MyList" and What is ... end TabloidSelect NOTE : in order to avoid HyperCard's confusion, existing quotes in What param are automatically changed to single quote. When a windoid is opened, the "openTabloid" message is sent, followed by the windoid name. This allows to define window properties before it is shown, since the message can be trapped using a handler : on openTabloid Which if Which is "MyWindow" then... end openTabloid When a windoid is close, the "closeTabloid" message is sent, followed by the windoid name. This message can be trapped using a handler : on closeTabloid Which if Which is "MyWindow" then... end closeTabloid HINT : the card script contains a "on ControlKey" handler that allows selection of first matching cell when typing a key in conjunction with control key. Moreover, while holding the control key down, the arrow keys allow to move in the list, return or enter to simulate a double-clic. It is possible to send any string to search for to the window using : send "string" to window If the string is found, it will be highlighted int the window. Look for "on controlKey" handler in the card script, type Control+Key to try it. The lockText property define the behaviour of the window. Default value is TRUE, meaning that a click on a cell selects it. When cursor is over window, holding Option key (or having lockText set to FALSE) allows to change cell size by dragging or edit their content. The cursor's shape tells exactly what can be done. One in editing mode, cell is framed and moving around is possible using Tab or Return key with or without Shift key (validation). To exit editing, type Enter (validation) or Escape key (cancelling), or click in any other cell. Setting properties involving cell size also resizes the window to keep previously visible cell still visible. PROPERTIES Like any XWindow, Tabloid has properties that can be get and set thru HyperTalk. properties of window "name" will return an item list of all allowed properties : loc : windoid's position according to card visible : windoid's visibility text : windoid's text rect : windoid's position and size according to card selectedCell : cell(s) currently selected selectionMode : selection mode (NO|ONE|CON|DIS) frame : cell frame (true|false) columnWidth : width of columns in pixels rowHeight : height of rows in pixels lockText : locking/unlocking cells textFont : font name textSize : font size textAlign : font alignment ERRORS If an error occurs, Tabloid can return : "Error : Missing window name" "Error : Duplicate window name" "Error : Empty parameter" "Error : Bad Font size" "Error : Unknown font name" "Error : Unrecognized parameter #xx" "Error : Unable to create XWindow" "Error : XWindows not implemented" "Error : Couldn't create list" VERSION HISTORY 1.1 : Added properties columnWidth, rowHeight, lockText, textFont, textSize & textAlign Updated LDEF resource (1.1) Added editing feature Added cell sizing Fixed window update fixed window visible state when switching under MultiFinder -------------------------------------------------------------------- This (these) external(s) is (are) FreeWare,allowing unlimited use in any non-commercial stack. You just need in this case to mention the author's name and copyright in your stack. Any commercial use must be licensed and aknowledged by the author. F. Rinaldi - 1989,1990,1991 AppleLink: RINALDI1 Calvacom : FR10 Compuserve : 71170,2111Tabloid`BMAPQ   ?!k7} : ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0X=0_~>0/ =0>!=!>>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_~>0/8 =0>!g=!~>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p~>0X=0_n>0/|=0>!g=!z>!<= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0X=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!>>!= > ;= p~>0X=0_~>0/ X0~!!>"!"= ("> ;Y = p>Y(>0\X0=0_jX(`>0/xX=0X(>!gX=!zX(>! ?Y0 = p~Y(a>0X0/xX =0X(>!c( =!{((>!7>(0}!k(8` ?@@CARDNOXf : h\o on mouseUp visual effect wipe right slowly doMenu "prev" end mouseUp fm} on mouseUp visual effect wipe left slowly doMenu "next" end mouseUp ( )f Header& h)n titleL  dw@ firston mouseUp go card "Index" end mouseUp" +V V W{ Printon mouseUp print cd field "theText" end mouseUpTopic: DTCapture XCMDۀ N X- 7DTCapture is an XCMD to activate and acquire PICT images from the Data Translation QuickCapture 8-bit frame grabber board. The XCMD can operate the QuickCapture board in one of three modes. Focus Mode generates a continuous display which is centered on the current monitor. The height and width and input channel can be specified. SaveAsFile Mode captures a frame and saves it as a PICT2 file with creator type IMAG. IMAG is the creator specification for PICT files clickable from the disktop by the image analysis programs NIH Image and ColorImage. SaveAsClip Mode captures a frame and saves it to the Clipboard. The images are saved as type 2 PICT images. Calling Syntax: DTCapture [] must be: Focus -Focus video channel . SaveAsFile -Grab Image and save as PICT file SaveAsClip - save as a PICT to the ClipBoard must be: The input channel of the QuickCapture frame grabber. This parameter must between 0 and 3 must be: The Height of the image to be created in pixels. This parameter must between 1 and 479. must be: The Width of the image to be created in pixels. This parameter must between 1 and 639. may be: The File Specification of the file to be created with the SaveAsFile command. This parameter is optional and can be passed from HyperTalk. If it is omitted, SFPut file will be evoked to prompt for an output file specification. DTCapture XCMD`BMAPO   ?!k7} : ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0X=0_~>0/ =0>!=!>>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_~>0/8 =0>!g=!~>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p~>0X=0_n>0/|=0>!g=!z>!<= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0X=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!>>!= > ;= p~>0X=0_~>0/ X0~!!>"!"= ("> ;Y = p>Y(>0\X0=0_jX(`>0/xX=0X(>!gX=!zX(>! ?Y0 = p~Y(a>0X0/xX =0X(>!c( =!{((>!7>(0}!k(8` ?@@CARDL&M7Xf :  h\o on mouseUp visual effect wipe right slowly doMenu "prev" end mouseUp fm} on mouseUp visual effect wipe left slowly doMenu "next" end mouseUp ( )f Header& h)n titleL  dw@ firston mouseUp go card "Index" end mouseUp( +V theTextV W{ Printon mouseUp print cd field "theText" end mouseUpTopic: Toolbox Externals ׁ L X < D8 E^ m   )T a  g p $ .  1 8     $    . 1 }   G `  G N The Laboratory Toolbox includes a variety of XCMD's and XFCN's some of which we have created and others which we have acquired from other stacks. Device XCMD's Digitize: This XCMD is the HyperTalk interface to the MacAdios Digitize Driver. Digitize supports multi-channel acquisition and real-time display of acquired waveforms DTCapture: This XCMD controlls the Data Translation QuickCapture frame Grabber board. microTV: This XCMD is the HyperTalk interface to the Aaps MicroTV driver. It supports all of the Apps Frame grabber boards. It is copyrighted by Aapps SCSIio: This XCMD is the HyperTalk interface to the MacAdios SCSIio Driver. SCSIio supports multi- channel acquisition and real-time display of acquired waveforms from the MacAdios SCSI Devices as well as control of the MacAdios Function Generator. Array XCMD's These XCMD's create, dispose and allow access to the array structures maintained by the GW Instruments analog interfaces. Integer Arrays contain analog data while Zero Arrays are parameter blocks which are utilized in SCSI and Extended mode calls to the devices. The calls are: NewIntegerArray Returns a pointer of an array of specified size. DisposeIntegerArray Deallocates storage for an array. GetIntegerElement Returns the value of an element of an array. SetIntegerElement Sets the value of an element of an array. NewZeroArray Creates a parameter block for communication with SCSI devices and operation in extended mode. Analog Data Manipulation These XCMD's and XFCN's support the GW Instruments DataManipulation library. They require the library to be present on the disk to function. BLoad: This XFCN controls reading a binary analog disk file to CPU memory and returns a Pointer to the file. BSave: This XCMD writes an analog array to disk as a GWI Type 2 binary file. FileLen: This XFCN reports the size of a binary analog disk file so it can be acquired with BLoad MoveData: This XCMD copies the contents of one array to another; i.e. it duplicates arrays. Deriv: This XCMD takes the derivative of one array and stores it in another Integ: This XCMD integrates regions of an analog array for peak analysis and/or filtering. Peaks: This XCMD generates an analog array where the peaks of an input array are segmented from the original waveform. VideoTape Control OpenVidPort This command opens the serial port for communication with a Sony LANC or control-S device. CloseVidPort This command opens the serial port TxL This XCMD transmits a command to a Sony LANC device. TxS This XCMD transmits a command to a Sony control-S device. RxL This XFCN returns counter and status information from a Sony LANC device. SearchV11L This command performs a search for a particular time or counter value on a Sony LANC device. Serial Port Control ConfigureSPort CloseSPort SendSPort RecvUpTo breakSPort setSPortBufferSize Resource XCMD's & XFCN's These commands allow access to the resource fork of files and the clipboard CreateRes OpenRes CloseRes GetRes PutRes GetScrap PutScrap Animation These commands allow the generation of animations on the screen from PICS files. numPICs This XFCN returns the number of PICTs in a PICS file showPICs This XCMD displays a PICS animation at a specified speed. ToolboxExternals`BMAPM7   ?!k7} : ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0X=0_~>0/ =0>!=!>>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_~>0/8 =0>!g=!~>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p~>0X=0_n>0/|=0>!g=!z>!<= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0X=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!>>!= > ;= p~>0X=0_~>0/ X0~!!>"!"= ("> ;Y = p>Y(>0\X0=0_jX(`>0/xX=0X(>!gX=!zX(>! ?Y0 = p~Y(a>0X0/xX =0X(>!c( =!{((>!7>(0}!k(8` ?@FREEFree Object Xf : h\o on mouseUp visual effect wipe right slowly doMenu "prev" end mouseUp fm} on mouseUp visual effect wipe left slowly doMenu "next" end mouseUp ( )f Header& h)n titleL  dw@ firston mouseUp go card "Index" end mouseUp( +V theTextV W{ Printon mouseUp print cd field "theText" end mouseUpTopic: PlannedExtensions.B P    ) 1The following new features are planned for the Laboratory Toolbox: Instruments Sony Pro Mavica Recorder/Player Sony Mavica Camera Sharp JX-100 Color Scanner Farallon MacRecorder Viewers Electronic Still video disk image Catalog Handlers Sony ProMavica Controller Sony Mavica Camera Controller Editors Pixel Map and PICS dithering algorithm to support type 1 PICT's PlannedExtensions`BMAPK   ?!k7} : ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0X=0_~>0/ =0>!=!>>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_~>0/8 =0>!g=!~>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p~>0X=0_n>0/|=0>!g=!z>!<= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0X=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!>>!= > ;= p~>0X=0_~>0/ X0~!!>"!"= ("> ;Y = p>Y(>0\X0=0_jX(`>0/xX=0X(>!gX=!zX(>! ?Y0 = p~Y(a>0X0/xX =0X(>!c( =!{((>!7>(0}!k(8` ?@CARDHI)Xf : h\o on mouseUp visual effect wipe right slowly doMenu "prev" end mouseUp fm} on mouseUp visual effect wipe left slowly doMenu "next" end mouseUp ( )f Header& h)n titleL  dw@ firston mouseUp go card "Index" end mouseUp( +V theTextV W{ Printon mouseUp print cd field "theText" end mouseUpTopic: SupportedDevicesb" C U  Frame Grabbers Data Translation QuickCapture Aaps DigiVideo Color Analog Interfaces GW Instruments MacAdiosII GW Instruments 8A/D SCSI Interface GW Instruments FG SCSI Function Generator Digital Interfaces GW Instruments 8DI/O SCSI Interface Serial Line Devices InterOceans S4 Current Meter Virtual Terminal EmulationSupportedDevices`BMAPI)   ?!k7} : ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0X=0_~>0/ =0>!=!>>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_~>0/8 =0>!g=!~>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p~>0X=0_n>0/|=0>!g=!z>!<= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0X=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!>>!= > ;= p~>0X=0_~>0/ X0~!!>"!"= ("> ;Y = p>Y(>0\X0=0_jX(`>0/xX=0X(>!gX=!zX(>! ?Y0 = p~Y(a>0X0/xX =0X(>!c( =!{((>!7>(0}!k(8` ?@ `CARD37Xf : nh\o on mouseUp visual effect wipe right slowly doMenu "prev" end mouseUp fm} on mouseUp visual effect wipe left slowly doMenu "next" end mouseUp ( )f Header& h)n titleL  dw@ firston mouseUp go card "Index" end mouseUp( +V theTextd  Y Toolbox Structureon mouseUp go card "Toolbox Structure" end mouseUpd 'Y Project Structureon mouseUp go card "Project Structure" end mouseUpVW{ Printon mouseUp print cd field "theText" end mouseUpTopic: OverviewP '8/@   L R   #v 5 N  :G   +What is the LaboratoryToolbox? The LaboratoryToolbox is a Hypercard Stack which originated as a tool for teaching laboratory computing. It implements an object oriented "Laboratory Notebook" structure for the acquisition and management of sensor based data within a laboratory environment. The LaboratoryToolbox Stack is organized to support hypothesis testing. The home stack spawns Project stacks which organize the information and data objects which support the test of a hypothesis. Each Project Stack can spawn Experiment cards which organize the information and a set of Trial cards of a particular method for testing the hypothesis. Each Trial card organizes a set of Data Objects which support or trash the particular method of testing the hypothesis. An Extensible Data Dictionary The LaboratoryToolbox only operates on Data Objects which have been defined in a Data Dictionary. Each Data Type defined in the Dictionary is either supported by the Instruments, Viewers, Handlers and Editors of the Stack or by applications accessable from the stack. An Experimental Database Laboratory Toolbox operates within the framework of a set of Project Stacks. The Project stack consists of a Project Card, A Chronology Card, A PathList card, a set of Experiment Cards and for each Experiment Card a set of Trial Cards. As Data Objects are added to each trial they utilize or add to paths in the PathList card An Extensible Set of Instruments Instrument cards implement a set of virtual instruments which perform data acquisition functions. An Extensible Set of Handlers Handler cards control serial line peripherals, VCR's and CamCorders. An Extensible Set of Viewers Viewer cards support display and review of table, analog and image data as well as videotapes. An Extensible Set of Editors Editor Cards support display and alteraton of acquired analog and table data as well as some signal processing and statistical operations.Overview`BMAP7   ?!k7} : ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0X=0_~>0/ =0>!=!>>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_~>0/8 =0>!g=!~>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p~>0X=0_n>0/|=0>!g=!z>!<= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0X=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!>>!= > ;= p~>0X=0_~>0/ X0~!!>"!"= ("> ;Y = p>Y(>0\X0=0_jX(`>0/xX=0X(>!gX=!zX(>! ?Y0 = p~Y(a>0X0/xX =0X(>!c( =!{((>!7>(0}!k(8` ?@`CARD8FXf :0P dw@ firston mouseUp go card "Overview" end mouseUp(w theTextjZ~ Printon mouseUp doMenu "Print Card" print cd field "theText" end mouseUp,&9 G    The Laboratory Toolbox stack is organized into 4 levels: Toolbox Home: The toolbox Home Card is the "root" of all utilities, interfaces and projects. Toolbox Utilities: The Toolbox Utilities do the actual acquisiton and operations on Data Objects. Toolbox Interfaces: The Toolbox Interfaces integrate the data processing functions of the Toolbox Utilities with the data base management functions of the Project Stacks. Project Trial Cards: The creation of Data Objects occurs at the level of the Project Trial Cards. Toolbox Structure BMAPF qDqH& fff@&&F #oq?? Q? Q'`"Q$D "Q @ "SaB<كB}S@b_}B$$b":BD@B_e + Q?QQDDDQ@@@qLqqDDD@aDDDfff@%@31@&qp**&@() (I @()@ (I@+p(836 +T(("6 9@/ l=l͘9grl96xe`lTc͞^yh|yodA^=]coN}hܽ9orAWer/MTkx3xsxݏ$2<rpPTxTHr"p  )@@,)@,&?0#H&/ # CEE@Pu@ "4&@@=qclqcu`|Ã88yto=\Cg@2_Vt>xH3" H$H8x45Lxx 70D3 c LR@w@@ C 2HHDQv/xA@DsHHÇxv?v@@ᢅ@@ AWer/MTkx3`CARD9GXf :.P dw@ firston mouseUp go card "Overview" end mouseUp(| theTextj\Y} Printon mouseUp doMenu "Print Card" print cd field "theText" end mouseUp*N %W c !&=E  W eEach Laboratory Toolbox Project stack organizes the data which tests a hypothesis The Project Card defines the hypothesis to be tested and provides paths to the different Experiment Cards, the DataObject Chronology, and the PathList. Each Experiment Card contains the hypothesis testing Goals and documentation of Methods for achieving the Goals as well as a list of the different Trials for the experiment Each Trail Card organizes a definition of the particular treatment of the trial, a journal of the events and data manipulation which have occurred on the data objects and a list of the Data Objects, their Creation dates, data definition and a path to their current media location. The Chronology Card contains an annotated chronological list of the creation dates and modification dates of all data objects associated with the project. The Path List Card maintains a table of the paths to the media locations of the different data objects and their associated path numbers.Project StructureBMAPG  j,D >   9H@A3AAd?  +  +" T`"G@@T@"  $@U<ÇXVaB<كc^XU}SCRDU".D"%$&$5DHe":BD@c( 8d #8Q*Q9_B8 G"@/ s`$$  (8 @)? ( ( ( ( ) 8?  *Z*[l8Kt0Bal BA|G  RA@  RAH  Br   8? (8 @ 8? (  (  (  (   )?  y Caps Multi-S@CARD Xf :  h\o on mouseUp visual effect wipe right slowly doMenu "prev" end mouseUp fm} on mouseUp visual effect wipe left slowly doMenu "next" end mouseUp ( )f Header& h)n titleL  dw@ firston mouseUp go card "Index" end mouseUp" +V V W{ Printon mouseUp print cd field "theText" end mouseUpTopic: Plot PICTDraws a PICT resource from the in the current stack or any file on any mounted volume. May specify the PICT by name or ID. PICT #0 is used if neither is specified. The PICT will be within the boundaries of the current card or over top of EVERYTHING in the specified rectangle. Calling Syntax: PlotPICT , , , , , the name of the PICT resource the number of the PICT resource the path to the file containing the PICT. the current stack is used if filename is specified. the rect into which the PICT will be drawn (in global coordinates). if the literal string NoClipping is passed the pict will be drawn overtop of EVERYTHING (window, windoids, menubar, etc). The XCMD RedrawDesktop (contained in this stack) can be used to cleanup after this XCMD. It will force a redraw of all windows and the desktop, getting rid of all traces of the PICT. Plot PICT`BMAP   ?!k7} : ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0X=0_~>0/ =0>!=!>>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_~>0/8 =0>!g=!~>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p~>0X=0_n>0/|=0>!g=!z>!<= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0X=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!>>!= > ;= p~>0X=0_~>0/ X0~!!>"!"= ("> ;Y = p>Y(>0\X0=0_jX(`>0/xX=0X(>!gX=!zX(>! ?Y0 = p~Y(a>0X0/xX =0X(>!c( =!{((>!7>(0}!k(8` ?@CARDDEXf5 Ph\o on mouseUp visual effect wipe right slowly doMenu "prev" end mouseUp fm} on mouseUp visual effect wipe left slowly doMenu "next" end mouseUp "2X v$ S Backon mouseUp go to card "S4 Current Meter" of stack "LaboratoryToolbox" end mouseUpL dw@ firston mouseUp go card "Index" end mouseUpV W{ Printon mouseUp print cd field "theText" end mouseUpLThe InterOceans Systems Model S4 Current Meter is intended for measurement and recording of horizontal water currents. Initialization and data retrieval are accomplished using the S4 control stack in conjunction with an RS232C connector via the phone port modem. This is then connected through an InterOcean Model S110 Interface Unit to the output connector on the S4. There are two cards in this stack: the card which you were previously viewing is used to program or initialize the S4 current meter, while the card following it is used in data retrieval from the S4 current meter.S4 Meter General Info BMAPE ",] 08BB $ 00) ?!k7} : ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= n(R87p$5p2g8'0%0050`b  ` V#P #(B& 0pw 01gB' % Pt`R0&< 9R ".`  ˤ@&' E(#$ϠQf0TǑC@PP4E0PP`D@R0 "  %3!e (  n(B!007 3 0,=R524H /j+ "X@"@X5E l#S s{šdZR$o `QD H?- $0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0X=0_~>0/ =0>!=!>>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_~>0/8 =0>!g=!~>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p~>0X=0_n>0/|=0>!g=!z>!<= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0X=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!>>!= > ;= p~>0X=0_~>0/ X0~!!>"!"= ("> ;Y = p>Y(>0\X0=0_jX(`>0/xX=0X(>!gX=!zX(>! ?Y0 = p~Y(a>0X0/xX =0X(>!c( =!{((>!7>(0}!k(8` ?@H`5H<8"! RACARDBCXf5 &h\o on mouseUp visual effect wipe right slowly doMenu "prev" end mouseUp fm} on mouseUp visual effect wipe left slowly doMenu "next" end mouseUp "2X p$ S Backon mouseUp go to card "S4Retrieve" of stack "LaboratoryToolbox" end mouseUpL dw@ firston mouseUp go card "Index" end mouseUpV W{ Printon mouseUp print cd field "theText" end mouseUp" t{"Data Dump By pressing this button you begin the data transfer process from the S4 current meter to the field labeled "Raw Data from the S4 Current Meter." The header information will appear at the top of the file, followed by the current/direction data which will appear in 6 byte words coded in hexdecimal. This data will need to be converted into ASCII characters. Decoder By pressing this button the hexdecimal coded data is converted into readable speed and current data which is then read into the field labeled as such. Write to File By pressing this button the current and directional data described above can be exported to a text file. This text file can then be opened in other Macintosh programs such as Excel or Statview for subsequent analysis. S4 Meter Data RetrievalBMAPC ", 8((&/(5"  ?!k7} : ;= p>0X<=0_>0/x=0>!g=!z>!= "$gp> %2|# S@@ K@2 0,=3 400s{S3(>&C0AS88cn3R080/fzS3PCD``P!fC>B#0z&``(2Y %  n(c   HC x gü~ĵ -qHMC0_j >0/x =0 >!g =!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0X=0_~>0/ =0>!=!>>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_~>0/8 =0>!g=!~>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p~>0X=0_n>0/|=0>!g=!z>!<= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0X=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!>>!= > ;= p~>0X=0_~>0/ X0~!!>"!"= ("> ;Y = p>Y(>0\X0=0_jX(`>0/xX=0X(>!gX=!zX(>! ?Y0 = p~Y(a>0X0/xX =0X(>!c( =!{((>!7>(0}!k(8` ?@mmmmmmmm CARD@MA9Xf5h\o on mouseUp visual effect wipe right slowly doMenu "prev" end mouseUp fm} on mouseUp visual effect wipe left slowly doMenu "next" end mouseUp "2X p$ S Backon mouseUp go to card "S4Program" of stack "LaboratoryToolbox" end mouseUpL dw@ firston mouseUp go card "Index" end mouseUp*; <Oa  Immediate Logging To start the S4 logging immediately type L into this field. Delayed Start Time To start the S4 at a predetermined time, type OL[MMDDYY/HHMM]. For example to start logging at 11:31 PM on May 31, 1965 type OL053165/2331.S4 Meter Start Time@BMAPA9 ", D @@ @ $!  0  ? ?!k7} : ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0g"#T 0" 30CA 0pw"!01gB0029sp|B!{Rp"1 0z2B[hB %S#A K4@|"0,=2"0@0s{BP%aB< 0AJAA&! !g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0X=0_~>0/ =0>!=!>>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_~>0/8 =0>!g=!~>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p~>0X=0_n>0/|=0>!g=!z>!<= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0X=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!>>!= > ;= p~>0X=0_~>0/ X0~!!>"!"= ("> ;Y = p>Y(>0\X0=0_jX(`>0/xX=0X(>!gX=!zX(>! ?Y0 = p~Y(a>0X0/xX =0X(>!c( =!{((>!7>(0}!k(8` ?@CARD>?Xf5 h\o on mouseUp visual effect wipe right slowly doMenu "prev" end mouseUp fm} on mouseUp visual effect wipe left slowly doMenu "next" end mouseUp "2X p$ S Backon mouseUp go to card "S4Program" of stack "LaboratoryToolbox" end mouseUpL  dw@ firston mouseUp go card "Index" end mouseUp̀&C E  Continuous Logging To put the S4 into continuous logging mode type PC into this field. In this mode the S4 will continue to log until its data storage area becomes full. Duty Cycle Logging An ON/OFF period for the S4 can be implemented by typing P[days on],[HH on][MM on]/[days in cycle],[HH in cycle][MM in cycle]. For example, to have the S4 turn on and log data for one minute every ten minutes, type P0,0001/0,0010.S4 Meter Log Rate`BMAP? "- X 0 05@ !@@ H ( !0 @P( ! ( %  ?!k7} : ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0/j"D 0s{$cC 01g0!{<cB; 0zd3p0 `p %eER`@(P@ KC0,=uR"0/ju0 0pw3.0AE!B@ B 0/fz/km 䇠 !z% >!<%`@= &`> ;&1= p><>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0X=0_~>0/ =0>!=!>>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_~>0/8 =0>!g=!~>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p~>0X=0_n>0/|=0>!g=!z>!<= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0X=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!>>!= > ;= p~>0X=0_~>0/ X0~!!>"!"= ("> ;Y = p>Y(>0\X0=0_jX(`>0/xX=0X(>!gX=!zX(>! ?Y0 = p~Y(a>0X0/xX =0X(>!c( =!{((>!7>(0}!k(8` ?@xX =0CARD<=Xf5 h\o on mouseUp visual effect wipe right slowly doMenu "prev" end mouseUp fm} on mouseUp visual effect wipe left slowly doMenu "next" end mouseUp "2X p! P Backon mouseUp go to card "S4Program" of stack "LaboratoryToolbox" end mouseUpL  dw@ firston mouseUp go card "Index" end mouseUp [ _The number of half-second samples to be averaged and stored internally as one word of current data is set within this field. In this field the number may range from 1 (store every half-second sample) to 65535 (average for ~9hrs. and store one word of current data). Example: To average samples for 10 minute before storing a word of data enter 1200 into this field. ( Two half-seconds samples, times 60 seconds to the minute, times 10 minute average period; 2(60)10 = 1200 ) S4 Meter AverageBMAP= "+ $ !!!Pa ?!k7} : ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= n(?G0g"a`G00pw*01g0/fz Ÿq|Q߃B;rH$"Et '!{Imz)"OB#0B"@ %#4 P" n(#3% V300,=w 20/j"BC ,X@ 2B0s{r)( ,o.%| 䇠0)>0 F ( '(<> ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0X=0_~>0/ =0>!=!>>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_~>0/8 =0>!g=!~>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p~>0X=0_n>0/|=0>!g=!z>!<= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0X=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!>>!= > ;= p~>0X=0_~>0/ X0~!!>"!"= ("> ;Y = p>Y(>0\X0=0_jX(`>0/xX=0X(>!gX=!zX(>! ?Y0 = p~Y(a>0X0/xX =0X(>!c( =!{((>!7>(0}!k(8` ?@= > ;= p>>0CARD:;Y5 h\o on mouseUp visual effect wipe right slowly doMenu "prev" end mouseUp fm} on mouseUp visual effect wipe left slowly doMenu "next" end mouseUp "2X p$ S Backon mouseUp go to card "S4Program" of stack "LaboratoryToolbox" end mouseUpL  dw@ firston mouseUp go card "Index" end mouseUp The header provides an area of 15 bytes for the user to enter a string of ASCII characters into the memory, such as the location of deployment. Any character over the maximum length of 15 will be lost without affecting the execution of the command.S4 Meter HeaderBMAP;   ?!k7} : ;= p>0X<=0_>0/x=0>!g=!z>!{{88 `88p> %2H4 @ n("#cG` 0,=a@@0=@>30pw+ ٙ0A|`97pB;B  1g b8ctq cpB?#1 0="R!DT@iP@"8A3!f#`  @2A%$r0cD$%bH %d4 @ %( K%K2'R0@0,=c!D$ SQ@Dc @ 伓$/A @"A@EA0/x-0C~ >x=0->!g-0=!z- `>!<-<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0X=0_~>0/ =0>!=!>>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_~>0/8 =0>!g=!~>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p~>0X=0_n>0/|=0>!g=!z>!<= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0X=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!>>!= > ;= p~>0X=0_~>0/ X0~!!>"!"= ("> ;Y = p>Y(>0\X0=0_jX(`>0/xX=0X(>!gX=!zX(>! ?Y0 = p~Y(a>0X0/xX =0X(>!c( =!{((>!7>(0}!k(8` ?@CARD102 Y : ph\o on mouseUp visual effect wipe right slowly doMenu "prev" end mouseUp fm} on mouseUp visual effect wipe left slowly doMenu "next" end mouseUp &$title" -$H *T See Scripton mouseUp go to card "Aaps EVS-900 Controller" in stack "LaboratoryToolbox" in a new window --edit the cardscript end mouseUp b -JZza More Helpon mouseUp go card "EVS-900 ControllerHelp" end mouseUpL  dw@ firston mouseUp go card "Index" end mouseUpAaps EVS-900 Controller This software controls a Sony EVS-900 8mm tape deck via the serial modem port and allows video display and frame grabbing via an Aaps DigiVideo color board. The reset, play, stop, and pause buttons allow control of the tape and video display. The get counter and go to buttons allow the user to find target values. The grab frame and dither frame buttons allow grabbing and dithering of video frames. Aaps EVS-900 ControllerBMAP2  +(Kr \ 1(104 C$ % "0 ⧁%@0HPtF ?!k7} : ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0X=0_~>0/ =0>!=!>>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_~>0/8 =0>!g=!~>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p~>0X=0_n>0/|=0>!g=!z>!<= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0X=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!>>!= > ;= p~>0X=0_~>0/ X0~!!>"!"= ("> ;Y = p>Y(>0\X0=0_jX(`>0/xX=0X(>!gX=!zX(>! ?Y0 = p~Y(a>0X0/xX =0X(>!c( =!{((>!7>(0}!k(8` ?@$ CARD0Y9M!2&^TitleJ@S<< prevon mouseUp doMenu "prev" end mouseUpJUh@ nexton mouseUp doMenu "Next" end mouseUpLj}@ firston mouseUp go card "Index" end mouseUp( "/6~ CurHMS( 9/M~ CurCtr( P/d~ CurFrm*  Y TargetHMS* Y TargetCtr* Y TargetFrm(}Status&[ cmd1Y do iton mouseUp set visible of card field "MessageBox" to true wait 3 seconds set visible of card field "messagebox" to false end mouseUp g,w~ GetCounteron mouseUp set visible of card field "getcounter" to true wait 3 seconds set visible of card field "getcounter" to false end mouseUpZ GoToon mouseUp set visible of card field "Hr:M:S GoTo" to true wait 3 seconds set visible of card field "Hr:M:S GoTo" to false end mouseUpZ GoToon mouseUp set visible of card field "counter goto" to true wait 3 seconds set visible of card field "counter goto" to false end mouseUpZ GoToon mouseUp set visible of card field "Frame goto" to true wait 3 seconds set visible of card field "frame goto" to false end mouseUp(o{& Channel&  frame(! Volume&"^Title%- Pop-up NoteFld 36on enterInField hide me send "hideShowPopUp" to card button id 36 end enterInField&/Ee Reseton mouseUp set visible of card field "reset" to true wait 3 seconds set visible of card field "reset" to false end mouseUp 'E Pop-up NoteFld 38on enterInField hide me send "hideShowPopUp" to card button id 38 end enterInField(F[e Playon mouseUp set visible of card field "play" to true wait 3 seconds set visible of card field "play" to false end mouseUp)[ Pop-up NoteFld 40on enterInField hide me send "hideShowPopUp" to card button id 40 end enterInField+,p8 Pop-up NoteFld 42on enterInField hide me send "hideShowPopUp" to card button id 42 end enterInField-Br: Pop-up NoteFld 44on enterInField hide me send "hideShowPopUp" to card button id 44 end enterInField/Cp8 Pop-up NoteFld 46on enterInField hide me send "hideShowPopUp" to card button id 46 end enterInField1- Pop-up NoteFld 48on enterInField hide me send "hideShowPopUp" to card button id 48 end enterInField2]re Stopon mouseUp set visible of card field "stop" to true wait 3 seconds set visible of card field "stop" to false end mouseUp3r Pop-up NoteFld 50on enterInField hide me send "hideShowPopUp" to card button id 50 end enterInField4tf Pauseon mouseUp set visible of card field "pause" to true wait 3 seconds set visible of card field "pause" to false end mouseUp5 Pop-up NoteFld 52on enterInField hide me send "hideShowPopUp" to card button id 52 end enterInField6EpYۀ Dither Frameon mouseUp set visible of card field "ditherframe" to true wait 3 seconds set visible of card field "ditherframe" to false end mouseUp7Yp8 Pop-up NoteFld 54on enterInField hide me send "hideShowPopUp" to card button id 54 end enterInField9t< Pop-up NoteFld 56on enterInField hide me send "hideShowPopUp" to card button id 56 end enterInFieldt:  Get Counteron mouseUp set visible of card field "get counter" to false end mouseUpv;  Hr:M:STargeton mouseUp set visible of card field "Hr:M:STarget" to false end mouseUpx<  CounterTargeton mouseUp set visible of card field "countertarget" to false end mouseUpt=  FrameTargeton mouseUp set visible of card field "FrameTarget" to false end mouseUpr>  MessageBoxon mouseUp set visible of card field "MessageBox" to false end mouseUpr?  EVS900initon mouseUp set visible of card field "EVS900Init" to false end mouseUph@  Reseton mouseUp set visible of card field "Reset" to false end mouseUpfA  Playon mouseUp set visible of card field "Play" to false end mouseUpfB  Stopon mouseUp set visible of card field "Stop" to false end mouseUphC  Pauseon mouseUp set visible of card field "Pause" to false end mouseUptD  OpensmallTVon mouseUp set visible of card field "opensmallTV" to false end mouseUpxE  closeTVwindowon mouseUp set visible of card field "closeTVwindow" to false end mouseUppF  GrabFrameon mouseUp set visible of card field "grabframe" to false end mouseUp~GZs+ Go Backon mouseUp go card "Color EVS-900 Controller" of stack "LaboratoryToolbox" end mouseUpH0mD؀ Grab Frameon mouseUp set visible of card field "grabframe" to true wait 3 seconds set visible of card field "grabframe" to false end mouseUp,I  ditherframe,J  getcounter,K  Hr:M:S GoTo.L  counter goto,M  frame gotoHandler:Handler: EVS-900 Controller VCRcmd mplay 00:00:000900 00:00:3043 For Help: Click on a button. A description of what that button does will appear in this box. Click on this box and the description will disappear. Handler:0,initializes serial port to EVS900 tape deck Get Counter: Updates Hr:M:S, Counter, and Frame values to current settings from the tape deck. Displays those values in "Current" fields. Hr:M:S GoTo: Locates and pauses the tape at user defined Hour, Minute, Second tape values. Displays target values in Target fields.8Locates and pauses tape at user defined counter value. 4Locates and pauses tape at user defined frame valueD Message box: Command-line interface for Hypertalk commands(Initializes the EVS900 tape deck 7Rewinds the tape and resets counter value to zero= EVS900 Init: Initializes port to EVS900 tape deck 9 Reset: Rewinds tape and resets counter to zero.- Play: Puts tape deck into play mode- Stop: Puts tape deck into stop mode0 Pause: Puts tape deck into pause mode.D Open Small TV: Opens and displays Aaps color video screen.: Close TV Window: Closes Aaps color video screen.R Grab Frame: Grabs current frame and stores a pixel map on the clipboard.I Dither frame: Dithers current frame and displays in card window^ Get Counter: Displays current Hr:M:S, counter, and frame value of the tapes positionD Hr:M:S GoTo: Sets tape to user defined Hr:M:S target valueF Counter GoTo: Sets tape to user defined counter target valueB Frame GoTo: Sets tape to user defined frame target valueEVS-900 ControllerHelpfunction tvOpen global tvControl if tvControl is empty or item 1 of tvControl is 0 then return false else return true end tvOpen on closeCard if tvOpen() then send "mouseUp" to card button "Close TV Window" end closeCard on openCard -- other scripts, including the tvOpen function use the emptiness -- of tvControl as a test to see if the tv is read to use. global tvControl put "" into tvControl end openCard on screenTest global tvControl, testTuple, testTemplate, hasLargeScreen -- item 11 of the tvControl variable is 1 if the Aapps Video -- Professional daughterboard is there to allow for the big -- screen. -- if the item is empty, then the window hasn't been opened, so -- this script opens it just long enough to check for the big screen. if item 11 of tvControl is empty then -- prep our 'private' globals for the test put "0,0,,testTemplate,1,0," into testTuple put "window,,0,0,0,0,0,0,0,0,,,,end" into testTemplate microTV "testTuple" if the result is empty then -- no error message from the XCMD if item 11 of testTuple is 1 then put true into hasLargeScreen else put false into hasLargeScreen microTVPoll -- needed to clear activate/deactivate events mtvClose "testTuple" else -- scream for help answer "There are no MicroTV cards in this system that this stack can use." with "OK" put false into hasLargeScreen end if else if item 11 of tvControl is 0 then put false into hasLargeScreen else put true into hasLargeScreen end screenTest BMAP0  m &&8&0`&gUgg<H0 !V`3v ?qH~D @D ~ǀ   A Z or o At 2 A( ~c B.` .`"+@ `>@ 20 .# ~ 0 ~GO P `$; @$1 0 " $ `? 1  1 S$@SN原@#l0 D C 4 b<@b$M@  $ zz/M \z偔3z0\0=\P1zǃ***lEUiV{G|>`$ z`z>\ l$;L$1<" l?'''  w3mlxw32 w!" w?" w  " w 11" wێs~x ~ ~ n ~l ~0 ~  ~  ~ Q ~ a ~p# |..@ @ <̀ ~DdFf ~DDD$ ~DDG ~DDD ~LDF$ ox63 B@PDf P|a13 PD@! P@A? P@B P@C11 Pۙ % % el|sU&0U U> UB qUf e;p|''z8z 0z jj z$Cz$@0"<vD"wD"!0vF0"!v8C"! "" "< ***z3c6zz z z  z 1zۘ8+\\c2f\""B\"~\""@\b"bk÷3<CARD-.z@Y :h\o on mouseUp visual effect wipe right slowly doMenu "prev" end mouseUp fm} on mouseUp visual effect wipe left slowly doMenu "next" end mouseUp p2 X texton mouseUp if the clickText is "Bload" then go to card "Bload" end mouseUp,R See Scripton mouseUp go to card "derive" in stack "LaboratoryToolbox" in a new window edit the script of button "derive" end mouseUp D0Y{ Backon mouseUp go back end mouseUpL dw@ firston mouseUp go card "Index" end mouseUpVW{ Printon mouseUp print cd field "theText" end mouseUp  4Filelen XFCN returns the length of a file, written onto a disk, in bytes. This XFCN is mainly designed to work in conjunction of Bload to facilitate retreiving of files and enabling the creation of arrays to hold the said files. The call syntax for the XFCN is: put Filelen Diskname, Filename, Er into xxxx where: Diskname=the name of disk containing the file Filename=name of the file to be measured. Paths to folders are to specified here with the convention :foldername:filename. Er=error array xxxx=container to store the length Note that an integer occupies two bytes of storage, whereas a single precision value occupies four bytes of space. Filelen@BMAP.z   ?!k7} : ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>s{8pB?xp A 03`00 0Y@H!fiSB@0b'|34| %t.ty n(2.3=0gsE :tXED04|5 |0s{R be4 01g4@5@3@0/fzCab€` BabI>AIHHt!<#= $> ;$= p>$>0\#=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0X=0_~>0/ =0>!=!>>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_~>0/8 =0>!g=!~>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p~>0X=0_n>0/|=0>!g=!z>!<= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0X=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!>>!= > ;= p~>0X=0_~>0/ X0~!!>"!"= ("> ;Y = p>Y(>0\X0=0_jX(`>0/xX=0X(>!gX=!zX(>! ?Y0 = p~Y(a>0X0/xX =0X(>!c( =!{((>!7>(0}!k(8` ?@UUUUUUUCARD+,@Y :.`h\o on mouseUp visual effect wipe right slowly doMenu "prev" end mouseUp fm} on mouseUp visual effect wipe left slowly doMenu "next" end mouseUp 3V texton mouseup if the clickText is "NewIntegerArray" then go to card "NewIntegerArray" else if the clickText is "Filelen" then go to card "Filelen" end mouseUp,H See Scripton mouseUp go to card "Load and Save arrays" in stack "LaboratoryToolbox" in a new window edit the script of button "load array" end mouseUp D0Yy Backon mouseUp go back end mouseUpL dw@ firston mouseUp go card "Index" end mouseUpVW{ Printon mouseUp print cd field "theText" end mouseUp\*7 ^c d1 Bload is an XCMD for reading a file from disk to an array. Prior to calling Bload, the user must create an array of proper dimensions to hold the data by using the XCMD NewIntegerArray. This can be achieved by first calling the XFCN Filelen, which reports the length of the file on disk. The call syntax is: BLoad disk, file, array, size, Er where disk=the name of th disk containing the file file=the name of the file to be read array=the pointer to the array to contain the string size=the length of the file in bytes (from Filelen) er=the error array Bload BMAP,  ਄ ?!k7} : ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=p/jbpxp `pwcG@H@01g@u 0xS !fRP>;|@z1b." S %b)YED KC(0:"00,=$|0/j$0Re 0pw3@0AR( (‹@Ba/fz/AQDIHz!z#>!<#= $> ;$= p>$>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0X=0_~>0/ =0>!=!>>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_~>0/8 =0>!g=!~>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p~>0X=0_n>0/|=0>!g=!z>!<= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0X=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!>>!= > ;= p~>0X=0_~>0/ X0~!!>"!"= ("> ;Y = p>Y(>0\X0=0_jX(`>0/xX=0X(>!gX=!zX(>! ?Y0 = p~Y(a>0X0/xX =0X(>!c( =!{((>!7>(0}!k(8` ?@`CARD)v*@Y :zh\o on mouseUp visual effect wipe right slowly doMenu "prev" end mouseUp fm} on mouseUp visual effect wipe left slowly doMenu "next" end mouseUp "2 X ,S See Scripton mouseUp go to card "Load and Save arrays"in stack "LaboratoryToolbox" in a new window edit the script of button "Save Array" end mouseUp ,0X New Button&0Yy BackL dw@ firston mouseUp go card "Index" end mouseUpVW{ Printon mouseUp print cd field "theText" end mouseUpvF Bsave XCMD saves an array to disk. The call syntax for this XCMD is: BSave diskname, outfilename, inputarray, ftype, size, er where: diskname=name of target disk outfilename=a name for the file inputarray=pointer for the array to be saved ftype=the GW Instruments code for the storage type size=the length of the array to be saved er=error code returnedBsave@BMAP*  訄 ?!k7} : ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=`/jT `s{1T ` `` P1gC0x (fA>;|@z29c\"0S? %r2 "X? KsaFt" `0,=R>0/jRv`( 0pw@ 30ARA X B/fzOX |!z>!<= > ;= p>$>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0X=0_~>0/ =0>!=!>>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_~>0/8 =0>!g=!~>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p~>0X=0_n>0/|=0>!g=!z>!<= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0X=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!>>!= > ;= p~>0X=0_~>0/ X0~!!>"!"= ("> ;Y = p>Y(>0\X0=0_jX(`>0/xX=0X(>!gX=!zX(>! ?Y0 = p~Y(a>0X0/xX =0X(>!c( =!{((>!7>(0}!k(8` ?@UUUUUUUUUUUUUUUUU@CARD'(@Y : Bh\o on mouseUp visual effect wipe right slowly doMenu "prev" end mouseUp fm} on mouseUp visual effect wipe left slowly doMenu "next" end mouseUp "? Y *W See Scripton mouseUp go to card "bload" in stack "LaboratoryToolbox" in a new window edit the script of button "load file" end mouseUp R0Yy Backon mouseUp global Origin go back end mouseUp"&)l L dw@ firston mouseUp go card "Index" end mouseUpV W{ Printon mouseUp print cd field "theText" end mouseUp=  NewIntegerArray XCMD creates a new integer array of a specified length, returning a pointer to the created array. The call syntax of this XCMD is: put NewIntegerArray (Size) into xxxx where size is the length of the array to be created and xxxx the container to store the pointer to the array.NewIntegerArrayBMAP(   ?!k7} : ;= p>0X<=0_>0/x=`Akp" 8`/fz  `c0`2  @@Af%@PH1!@  %" pc>9C7 n(B4 p1cAts"p,=B@*"x@@ `"@ŒSppw$>?@p1gTh?S XQ.0B@Zrp `(  RBT |@ (`PQ{A| m~$&D,H *@> ;*@= p>*>0\)=0_j>0/x=0>!g=!z>!<=> ;B``= p>B``>\``=_n``>0ps3|A?0/bzBz!F Rcc> ;Rcc= p>Rac>c߼ |0_~>0/> =0>!g=!~$>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0X=0_~>0/ =0>!=!>>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_~>0/8 =0>!g=!~>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p~>0X=0_n>0/|=0>!g=!z>!<= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0X=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!>>!= > ;= p~>0X=0_~>0/ X0~!!>"!"= ("> ;Y = p>Y(>0\X0=0_jX(`>0/xX=0X(>!gX=!zX(>! ?Y0 = p~Y(a>0X0/xX =0X(>!c( =!{((>!7>(0}!k(8` ?@CARD%&i@Y :h\o on mouseUp visual effect wipe right slowly doMenu "prev" end mouseUp fm} on mouseUp visual effect wipe left slowly doMenu "next" end mouseUp "= Y !<I See Scripton mouseUp go to card "statistics" in stack "LaboratoryToolbox" in a new window edit the script of button "statistics" end mouseUp ,=W New Button&0Yy BackL dw@ firston mouseUp go card "Index" end mouseUpVW{ Printon mouseUp print cd field "theText" end mouseUpl GetIntegerElement retrieves a value of an element from an integer array. The call syntax for this XCMD is: GetIntegerElement (Inputarray, Element) where inputarray is the name of the integer array and element is the index of the element one wishes to retrieve.GetIntegerElementBMAP&i  <     ?!k7} : ;= p>0X<=0_>ww!6?`Ak006  <P  ( 02 @@QfL@P00#8>`8 %Std™tYH et"(` KbȡP@0,=#" b"p ps{`0P p1g4\"p/fzXBCC, R ,b7>Y$Y>@ I >K@'!)A= *> ;*= p>c>0\>=0_j>0/x=0>!g=!z>q<x<8= B0> ;B0= p>B0>\0=03> sc0AC0>!F#? R0> ;R0p= p>Rx0X=0_~>0/> =0>!g$=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0X=0_~>0/ =0>!=!>>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_~>0/8 =0>!g=!~>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p~>0X=0_n>0/|=0>!g=!z>!<= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0X=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!>>!= > ;= p~>0X=0_~>0/ X0~!!>"!"= ("> ;Y = p>Y(>0\X0=0_jX(`>0/xX=0X(>!gX=!zX(>! ?Y0 = p~Y(a>0X0/xX =0X(>!c( =!{((>!7>(0}!k(8` ?@@CARD#$q@Y :2h\o on mouseUp visual effect wipe right slowly doMenu "prev" end mouseUp fm} on mouseUp visual effect wipe left slowly doMenu "next" end mouseUp "A W #>F See Scripton mouseUp go to card "statisitics" in stack "LaboratoryToolbox" in a new window edit the script of button "statistics" end mouseUp ,? V New ButtonD0Yx Backon mouseUp go back end mouseUpL dw@ firston mouseUp go card "Index" end mouseUpVW{ Printon mouseUp print cd field "theText" end mouseUp-h SetIntegerElement sets an element of a given array to a given value. The call syntax for this XCMD is: SetIntegerElement (Inputarray, Element, Value) where Inputarray is the name of the array, element the index of the element to be changed, and value the value the element is to store.SetIntegerElement BMAP$q "?  @@ ?!k7} : ;= p>0X<=0_>0/x=0>!g=r&{ 0& 010x @@ P @ ` %  K `,=0q1|q& /jϱƺp"Pppw aIC4`1g2"@  ")0"ACJb  RSRR(!fD"pzUCX@, RX0 8 ;Bsqq Ä<= p>>0\(=0_j(>0/x=0|>!g=!z>!<= > ;= p>B>\=_n>/|=>0C; '![C# b30> ;b0= p>b0>0(?0C w? 䇠0>!g=!~>!= <> ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0X=0_~>0/ =0>!=!>>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_~>0/8 =0>!g=!~>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p~>0X=0_n>0/|=0>!g=!z>!<= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0X=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!>>!= > ;= p~>0X=0_~>0/ X0~!!>"!"= ("> ;Y = p>Y(>0\X0=0_jX(`>0/xX=0X(>!gX=!zX(>! ?Y0 = p~Y(a>0X0/xX =0X(>!c( =!{((>!7>(0}!k(8` ?@`CARD!"8@Y :Fh\o on mouseUp visual effect wipe right slowly doMenu "prev" end mouseUp fm} on mouseUp visual effect wipe left slowly doMenu "next" end mouseUp v9X texton mouseUp if the clickText is "Movedata" then go to card "Movedata" end mouseUp,U See Scripton mouseUp go to card "array math" in stack "LaboratoryToolbox" in a new window edit the script of button "perform operation" end mouseUp &0Yz BackL dw@ firston mouseUp go card "Index" end mouseUpVW{ Printon mouseUp print cd field "theText" end mouseUpB^ "[ _  1 2i    +z ~Arithmetic manipulations are: sub2 subtracts the corresponding elements of the two arrays. div2 divides the members of array1 with the corresponding elements of array2. add2 adds the corresponding elements of the two arrays. mul multiplies the members of array1 with the corresponding elements of array2. They share the call syntax, which in general form is: (XXXX) array1, array2, lowerbd, upperbd, type where XXXX is any of the operations array1 and array2 are the two arrays to be operated on lowerbd and upperbd the boundaries within which the operation is to be done (endpoints inclusive) type the type of data contained in the arrays (type=0 denotes integer data, type0 single precision data). The operation is performed, and the resulting array is loaded into array1, the original contents of which are hence lost. In order to preserve the original array, use the XCMD Movedata to copy the array to another segment in memory prior to analysis Array Math BMAP"8  ب ?!k7} : ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0/j4bxp 0s{4b``00 01gH@ `(`q{P〠`~&3| "0n0Gk1> %R(=DED KB 0) ,=||0tV`pw =@01ge, $D!`/fz( ‘",$@IHz !z*>!<*=  *> ;&*= p>&*>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0X=0_~>0/ =0>!=!>>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_~>0/8 =0>!g=!~>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p~>0X=0_n>0/|=0>!g=!z>!<= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0X=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!>>!= > ;= p~>0X=0_~>0/ X0~!!>"!"= ("> ;Y = p>Y(>0\X0=0_jX(`>0/xX=0X(>!gX=!zX(>! ?Y0 = p~Y(a>0X0/xX =0X(>!c( =!{((>!7>(0}!k(8` ?@CARDr@Y :Fh\o on mouseUp visual effect wipe right slowly doMenu "prev" end mouseUp fm} on mouseUp visual effect wipe left slowly doMenu "next" end mouseUp 2 X on mouseUp if the clickText is "NewIntegerArray" then go to card "NewIntegerArray" if the clickText is "SetIntegerElement" then go to card "SetIntegerElement" end mouseUp*K See Scripton mouseUp go to card "statistics" in stack "LaboratoryToolbox" in a new window edit the script of button "statistics" end mouseUp &0Yy BackL dw@ firston mouseUp go card "Index" end mouseUpVW{ Printon mouseUp print cd field "theText" end mouseUpB D^mThe syntax for calling Stat is: stat inputarray, upperbd, stats Stat calculates statistics of a waveform from Array(0) to Array(upperbd), inclusive. The results are stored in array stats. Results obtained, and their locations are as follow: stats(0)=average value of waveform. stats(1)=minimum value of waveform. stats(2)=maximum value of waveform. stats(3)=index of first member greater than the high threshold. stats(4)=index of first member less than the low threshold. Prior to calling stats, the user must create an array at least 5 elements by using NewIntegerArray, and load high and low threshold values into stats(3) and stats(4), respectively, by using SetIntegerElement. If no point is greater than the preloaded value, a value of -1 is returned for stats(3). The same applies to stats(4) and low threshold. The average value is liable to overflow in cases where upper bound exceeds 65,535. Another restriction is the maximum array index of 32,767 that can be returned in stats(3) or stats(4). Statistics BMAP  $* ȍ@ ?!k7} : ;= p>0X<=0_>0/x=0>!g=!z>!= > ;"H= n(" `B 0,=@@0c`0pw`A37&Bw @/fz81c8 `34?&BG !f` 0R'"p" %"" KW  `g 2 B,  @/jĴ 7@ 0/x0=00>!g0=!z0>!<x= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0X=0_~>0/ =0>!=!>>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_~>0/8 =0>!g=!~>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p~>0X=0_n>0/|=0>!g=!z>!<= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0X=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!>>!= > ;= p~>0X=0_~>0/ X0~!!>"!"= ("> ;Y = p>Y(>0\X0=0_jX(`>0/xX=0X(>!gX=!zX(>! ?Y0 = p~Y(a>0X0/xX =0X(>!c( =!{((>!7>(0}!k(8` ?@UUUUUUUUCARDY :h\o on mouseUp visual effect wipe right slowly doMenu "prev" end mouseUp fm} on mouseUp visual effect wipe left slowly doMenu "next" end mouseUp )X See Scripton mouseUp go to card "derive" in stack "LaboratoryToolbox" in a new window edit the script of button "derive" end mouseUp "0 W p/V backon mouseUp Go to stack "LaboratoryToolDang" Go to card "derive" end mouseUpD0Yz Backon mouseUp go back end mouseUpL dw@ firston mouseUp go card "Index" end mouseUpVW{ Printon mouseUp print cd field "theText" end mouseUp 'Derive calculates the difference between adjacent array elements. This analysis is conducted for elements between upper bound and lower bound, endpoints inclusive. The syntax for calling derive is deriv inputarray, outputarray, lowerbd, upperbd, type where type is a parameter assigning the data to be integer (type=0) or single precision data (type0).Derivative BMAP  Ȩ ?!k7} : ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= n(2I< 0g"C 0"@0pw01g@0/fz#@;7xB t)4H.@!{#+4HB?@ 0 0`(@ %"" n($f`0 0,=#@@0/j# BX@ `s{?c|"Ĵ$o 0`>!g`=!z`>!<`= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0X=0_~>0/ =0>!=!>>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_~>0/8 =0>!g=!~>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p~>0X=0_n>0/|=0>!g=!z>!<= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0X=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!>>!= > ;= p~>0X=0_~>0/ X0~!!>"!"= ("> ;Y = p>Y(>0\X0=0_jX(`>0/xX=0X(>!gX=!zX(>! ?Y0 = p~Y(a>0X0/xX =0X(>!c( =!{((>!7>(0}!k(8` ?@ CARD @Y : h\o on mouseUp visual effect wipe right slowly doMenu "prev" end mouseUp fm} on mouseUp visual effect wipe left slowly doMenu "next" end mouseUp "1 X *M See Scripton mouseUp go to card "Peak" in stack "LaboratoryToolbox" in a new window edit the script of button "peak" end mouseUp x0 X New Buttonon mouseDown go to stack "LaboratoryToolDang" go to card "Peak" end mouseDown&0Yy BackL  dw@ firston mouseUp go card "Index" end mouseUpV W{ Printon mouseUp print cd field "theText" end mouseUp% LW a  Peak uses an XFCN to scan a given array for peaks. Every point in the array, except for those exceeding the set threshold, are set to zero. A peak in the array is confined by the first point exceeding the threshold, and the first point to fall below it. The syntax to call peak is Peak inputarray, upperbound, threshold - where upperbound is the index of the array element of the upper limit of this analysis, and inputarray the array to be analyzed. PeakAnalysis`BMAP !bz @* ?!k7} : ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= n("2ppDx<8 `g p20 0b0 0@0pw01g0/fzb5py2>BRr€r]<Qfb `""  >@ %c@8 > n(T @Y" 0,=B4 0RH@SH 3s{qKbqH'H$$=0@>!g@=!z>!<= '> ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0X=0_~>0/ =0>!=!>>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_~>0/8 =0>!g=!~>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p~>0X=0_n>0/|=0>!g=!z>!<= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0X=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!>>!= > ;= p~>0X=0_~>0/ X0~!!>"!"= ("> ;Y = p>Y(>0\X0=0_jX(`>0/xX=0X(>!gX=!zX(>! ?Y0 = p~Y(a>0X0/xX =0X(>!c( =!{((>!7>(0}!k(8` ?@@CARD4M@Y :h\o on mouseUp visual effect wipe right slowly doMenu "prev" end mouseUp fm} on mouseUp visual effect wipe left slowly doMenu "next" end mouseUp 2 X on mouseUp if the clickText is "NewIntegerArray" then go to card "NewIntegerArray" end mouseUp+W See Scripton mouseUp go to card "arithmetic manipulations" in stack "LaboratoryToolbox" in a new window edit the script of button "perform operation" end mouseUp &0Yy BackL dw@ firston mouseUp go card "Index" end mouseUpVW{ Printon mouseUp print cd field "theText" end mouseUp€Q o0?Movedata duplicates data stored in the memory. The call syntax for this XCMD is: Movedata Array1, Array2, Words where: Array1=the pointer to the segment to be duplicated Array2=the pointer to area receiving the copied segment Words=the length of the sement in words Movedata is useful when dealing with XFCN's which write their results over arrays fed in. Movedata can be used to duplicate the original array for further analyses. The user must, prior to calling Movedata, create a new array in the memory, equal in length to the original one, by using NewIntegerArray. Also, remember that an integer occupies one word, whereas a single precision element occupies two words. Movedata`BMAP !.  ?!k7} : ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>ps{C 8pA `C `c0``'@ @@@Qf 1!@ 0>3J; ; Äc88a0` cp= K"  hP@ ,=LFR``S0f>@'0s{B``Q@.001g4   0/fzrPX  (`pB2"OoH @!<= > ;= p>>0\<=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0X=0_~>0/ =0>!=!>>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_~>0/8 =0>!g=!~>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p~>0X=0_n>0/|=0>!g=!z>!<= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0X=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!>>!= > ;= p~>0X=0_~>0/ X0~!!>"!"= ("> ;Y = p>Y(>0\X0=0_jX(`>0/xX=0X(>!gX=!zX(>! ?Y0 = p~Y(a>0X0/xX =0X(>!c( =!{((>!7>(0}!k(8` ?@CARD6O@Y :h\o on mouseUp visual effect wipe right slowly doMenu "prev" end mouseUp fm} on mouseUp visual effect wipe left slowly doMenu "next" end mouseUp p2 X texton mouseUp if the clickText is "Bload" then go to card "Bload" end mouseUp+O See Scripton mouseUp go to card "bload" in stack "LaboratoryToolbox" in a new window edit the script of button "derive" end mouseUp D0Yy Backon mouseUp go back end mouseUpL dw@ firston mouseUp go card "Index" end mouseUpVW{ Printon mouseUp print cd field "theText" end mouseUp  4Filelen XFCN returns the length of a file, written onto a disk, in bytes. This XFCN is mainly designed to work in conjunction of Bload to facilitate retreiving of files and enabling the creation of arrays to hold the said files. The call syntax for the XFCN is: put Filelen Diskname, Filename, Er into xxxx where: Diskname=the name of disk containing the file Filename=name of the file to be measured. Paths to folders are to specified here with the convention :foldername:filename. Er=error array xxxx=container to store the length Note that an integer occupies two bytes of storage, whereas a single precision value occupies four bytes of space. Filelen@BMAP   ?!k7} : ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>s{8pB?xp A 03`00 0Y@H!fiSB@0b'|34| %t.ty n(2.3=0gsE :tXED04|5 |0s{R be4 01g4@5@3@0/fzCab€` BabI>AIHHt!<#= $> ;$= p>$>0\#=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0X=0_~>0/ =0>!=!>>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_~>0/8 =0>!g=!~>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p~>0X=0_n>0/|=0>!g=!z>!<= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0X=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!>>!= > ;= p~>0X=0_~>0/ X0~!!>"!"= ("> ;Y = p>Y(>0\X0=0_jX(`>0/xX=0X(>!gX=!zX(>! ?Y0 = p~Y(a>0X0/xX =0X(>!c( =!{((>!7>(0}!k(8` ?@UUUUUUU CARDY : h\o on mouseUp visual effect wipe right slowly doMenu "prev" end mouseUp fm} on mouseUp visual effect wipe left slowly doMenu "next" end mouseUp ( )f Header& h) title" j* " .is " lr "  " C  L dw@ firston mouseUp go card "Index" end mouseUpTopic: Credits SfInstructor: Dr. Joseph Ayers Internet Address: lobster@nuhub.acs.northeastern.edu Teaching Assistant: Jan Witting Ӏ; ZThis stack is the product of a class project in the course Biological Laboratory Computing The Department of Biology and Marine Science Center Northeastern University, East Point, Nahant, MA 01908l  Students: Traci Garofalo Sal Genovese Don Girouard Sarah Jordan Karen Lee Ted Maney Joe Stebbins Special Thanks to: Steve McCabe, GW Instruments, Inc. Mark Abbate, Abbate Video Consultants Kelly Martin, Data Translation, Inc2Northeastern University, 1990 All Rights ReservedCredits @BMAP  1 T. #@ $ @$@ $P0$`$0#$ `#`@ 騄 ?!k7} : ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=0_>0/x=0>!g=!z>!<= > ;= p~>0X=0_~>0/ =0>!=!>>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_~>0/8 =0>!g=!~>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p~>0X=0_n>0/|=0>!g=!z>!<= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0\=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>0X<=0_>0/x=0>!g=!z>!= > ;= p>>0X=0_j>0/x=0>!g=!z>!<= > ;= p>>0\=0_n>0/|=0>!g=!z>!<= > ;= p>>0X=0_~>0/> =0>!g=!~>!= > ;= p>>0\=0_j>0/|=0>!g=!z>!<= > ;= p~>0\<=p/ `"2`s! B AU!@201g" /fz00rf8#ls`p1Ps`p by>=Dpg^<yQ[`$8 r/DXQN`Ĝ Qzp 0|U 0\<> =0_ >0/x =0p>ag=a>>a= 2> ;2= p~B~>X=_~>0psXË`A @q>'C!"( B~("> ;B|S = KT00gݼE <p/jBExs{(@&01gX0 @0X0RT0b[D $00(q<@S00X0@0ww!@F01gX0!c( =!{((>!7>(0}!k(8` ?@+(+4 Y6NODiMSTBL         @g/N: n P-h`FTBL ChicagoPalatinohGenevaTimesMonacoZ@PRNT .@ hV _ NHmHmHn?<NACp? QBN")_` n,HNjN (_N^.NuBKGDNVH8B.B-?B/Nz+_>g`6p-@/NHnHz/NR/.NBg/N>_HnNjOdLN^ _PONNVH&nB.JVJgXVgNrmǤWJftmǤW‚g4r2-2PRSTHH(FG(HH(d' @f me is empty then delet CARDJ]KXf : h\o on mouseUp visual effect wipe right slowly doMenu "prev" end mouseUp fm} on mouseUp visual effect wipe left slowly doMenu "next" end mouseUp ( )f Header& h)n titleL  dw@ firston mouseUp go card "Index" end mouseUp( +V theTextV W{ Printon mouseUp print cd field "theText" end mouseUpTopic: PlannedExtensions€.B P  + ,K SThe following new features are planned for the Laboratory Toolbox: Instruments Sony Pro Mavica Recorder/Player Sony Mavica Camera Sharp JX-100 Color Scanner Farallon MacRecorder DataTranslation ColorCapture Card Viewers Electronic Still video disk image Catalog Handlers Sony ProMavica Controller Sony Mavica Camera Controller Editors Pixel Map and PICS dithering algorithm to support type 1 PICT's PlannedExtensions`FREEFree Object ((I!H!i!ih!f%G)'))-K9F2RZ__Yczk{o|k}k~gc[WFt1%k   f+1FW_Z_Z_Y_[_[_ZW9W[[[;_;[8VJt:-%K!*      eeee d eddded d dd d de d ccd d cc d c c d d d d D D d e E d d E E DD D Dd e e d eee e e e ee e d d e ee %l-559>>>>1>1>1>2BRBRBRBRBqBrBsBsBsBsBsBsBtBtFsFsBtFsBsBtBtBsBsBtBs>t:::>%H D! 1::522661-%H%J-:BSFJJJFFFFFFJJJNNRRRRRRRRSSSSSWSS8S8S7S8S8W7S7S7W8W7S8W8W7W7W8W8W7WXW8W7WWWWW7WWWWW7W7WX[X[X[X[x[X[X[X[Y[Z[y[y[y_x_x_z_Z[YW9W9[9[[_|[}[{WzS8OSW7_XcxcxcygycXcYc9c9_9__[[<[%) B#D$) 1ARqcsywwso4kffjnnrnjflfJb)^)^)^*^)b b ]Z ]^ ^^ b b+bKjnr{{wosw{Ux{{skgggxg9VFP95559999955555599999959999=AEEA=95I1H-(-(-G1G1H1I5I5j9==B-NNVbksYoZkZo[o~oogcW7J:.1-1-)%%i!h!H!HH(''&''''HH!H!i!i!h!f!F%F)(-j9JSV[_9c8gyk{o{o|k]k^c{[J9)k) g%N9N[:_[c[cZc;c<_;[:[Z[[;[;[8RF:-%K!*      d c d dd d d e d   b bb c cbc c c c d c c c d d dedneJulyAugust SeptemberOctoberNovemberDecember, , Nuasdfhgzxcvbqweryt123465=97-80]ou[ip lj'k;\,/nm. `.*+/- TAILNu r det slut